package com.java.array;

public class ArraySortDemo {

    /**
     * 冒泡排序
     * @param array
     */
    public static void bubbleSort(int[] array){
        //外层循环控制比较轮数 n - 1
        for (int i = 0; i < array.length - 1; i++) {
            //内层循环控制比较次数
            for(int j = 0;j < array.length - 1 - i; j++){
                //比较相邻元素，大的交换到后面
                if(array[j] > array[j + 1]){
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }

    /**
     * 二分查找
     * @param array
     * @param num
     * @return
     */
    public static int binarySearch(int[] array,int num){
        //定义开始位置变量
        int start = 0;
        //结束位置
        int end = array.length - 1;
        //循环查找
        while(start <= end){
            //计算中间位置
            int mid = (start + end) / 2;
            //比较中间值和查找数
            if(array[mid] > num){
                //淘汰后半部分
                end = mid - 1;
            }else if(array[mid] < num){
                //淘汰前半部分
                start = mid + 1;
            }else{
                //返回找到的位置
                return mid;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] arr = {78,44,72,99,38};
        bubbleSort(arr);
        for (int n : arr) {
            System.out.println(n);
        }
        System.out.println("二分查找：" + binarySearch(arr,899));
    }
}
